package com.bwie.common.utils;


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
 * 安全服务工具类
 *
 * @author ruoyi
 */
public class SecurityUtils {


    /**
     * 生成BCryptPasswordEncoder密码
     *
     * @param password 密码
     *
     * @return 加密字符串
     */
    public static String encryptPassword (String password, String salt) {
        return encryptMD5(password, salt);
    }

    /**
     * 判断密码是否相同
     *
     * @param rawPassword     真实密码
     * @param encodedPassword 加密后字符
     *
     * @return 结果
     */
    public static boolean matchesPassword (String rawPassword, String salt, String encodedPassword) {
        return encryptMD5(rawPassword, salt).equals(encodedPassword);
    }

    /**
     * 计算字符串的MD5加密值，并返回Base64编码的字符串。
     * @param password 要加密的字符串
     * @return 加密后的Base64编码字符串
     */
    public static String encryptMD5(String password, String salt) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update((password + salt).getBytes()); // 加盐处理
            byte[] digest = md.digest();
            return Base64.getEncoder().encodeToString(digest);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
